事件流描述的是从页面中接收事件的顺序;本文主要将以下知识点
1.DOM0级事件
2.DOM2级事件流的3个阶段
3.IE8及更老版本的事件流
DOM0级事件
DOM0级事件仅持支DOM内部实现的事件,通过给事件对应的属性赋值来添加事件监听,如:
document.body.onclick = function (event) {
console.log(event, '点击body')
}
移除事件监听通过给对应属性赋值null
或者undefined
即可;一个事件仅可添加(赋值)一个监听方法,重复添加(赋值)会覆盖前面的监听
DOM2级事件
DOM2级事件规定事件流有事件捕获阶段(capture phase)、处于目标阶段(target phase)和事件冒泡阶段(bubbling phase)三个阶段;
捕获阶段:事件对象通过目标的祖先从窗口传播到目标的父对象。这个阶段也被称为捕获阶段。
目标阶段:事件对象(event object)到达事件对象的事件目标(event target)。这个阶段也被称为at-target阶段。如果事件类型指示事件不冒泡,则事件对象将在完成此阶段之后停止。
冒泡阶段:事件对象以相反顺序传播目标的祖先,从event target的父对象开始,并以窗口结束。
DOM2级事件的添加与移除
通过addEventListener方法添加事件,removeEventListener移除事件;DOM2级事件可以添加多个监听方法,同一事件多次添加同一方法时只有第一次生效;目标阶段的执行顺序与useCapture参数无关,先添加的监听先执行
IE8及更老版本的事件流
IE8及更老版本通过attachEvent添加事件监听,通过detachEvent移除事件监听,同一事件可以重复添加同一方法,仅支持冒泡事件流
参考资料
JavaScript高级程序设计(第三版)
DOM-Level-2-Events
DOM-Level-3-Events
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。